//--
app
		.controller(
				'baixaController',
				[
						'$scope',
						'baixaService',
						'dialogs',
						'utilsService',
						function($scope, baixaService, dialogs, utilsService) {

							$scope.list = true;
							$scope.isCreate = true;
							$scope.condominio = {};
							$scope.titulo = {};

							/** Abre a seleção de data de movimento * */
							$scope.openMovimento = function($event) {
								$event.preventDefault();
								$event.stopPropagation();
								$scope.openedMovimento = true;
							};

							/** Abre a seleção de data de baixa * */
							$scope.openBaixa = function($event) {
								$event.preventDefault();
								$event.stopPropagation();
								$scope.openedBaixa = true;
							};

							/**
							 * Ao sair do campo valor juro e/ou valor desc, seta
							 * o valor pago *
							 */
							$scope.setValorPago = function($event) {

								$scope.unidade.valorPago = (parseFloat($scope.unidade.valorBaixa
										.toString().replace(",", "."))
										+ parseFloat($scope.unidade.valorJuro
												.toString().replace(",", ".")) - parseFloat($scope.unidade.valorDesc
										.toString().replace(",", ".")))
										.toString().replace(".", ",");

							};

							$scope.setValorBaixa = function($event) {

								$scope.unidade.valorBaixa = $scope.unidade.titulo.valorTitulo;
								$scope.unidade.valorJuro = 0;
								$scope.unidade.valorDesc = 0;
								$scope.unidade.valorPago = $scope.unidade.valorBaixa;

							};

							/** CREATE * */
							$scope.create = function(unidade) {

								$scope.unidade = null;
								$scope.list = false;
								$scope.isCreate = true;

								$scope.condominio.selected = undefined;
								$scope.titulo.selected = undefined;

							};

							/** RETRIEVE * */
							$scope.retrieveFilter = function() {

								if ($scope.filtro == undefined) {
									return;
								}

								var retrieveFilter = baixaService
										.retrieveFilter($scope.filtro.nomeCondominio);
								retrieveFilter
										.then(function(resposta) {

											if (resposta != null) {
												if (resposta.data.status) {
													$scope.lista = resposta.data.object;
												} else {
													showAlertMessage(resposta.data.message);
												}
											} else {
												showErrorMessage('Problemas de comunicação...');
											}
										});
							};

							/* Busca incremental dos condominios */
							$scope.retrieveCondominios = function(
									nomeCondominio) {

								if (nomeCondominio == null
										|| nomeCondominio == '') {
									return;
								}

								var retrieveFilter = baixaService
										.retrieveCondominios(nomeCondominio);
								retrieveFilter
										.then(function(resposta) {

											if (resposta != null) {
												if (resposta.data.status) {
													$scope.condominios = resposta.data.object;
												} else {
													showAlertMessage(resposta.data.message);
												}
											} else {
												showErrorMessage('Problemas de comunicação...');
											}
										});
							};

							/*
							 * Ao selecinoar condominio, seleciona os títulos
							 * abertos
							 */
							$scope.fillSelectsByCondominios = function() {
								$scope
										.retrieveTitulos($scope.condominio.selected.id);
								$scope
										.retrieveContas($scope.condominio.selected.id);
								$scope.retrieveHistoricos();
							};

							$scope.retrieveTitulos = function(idCondominio) {

								var retrieveFilter = baixaService
										.retrieveTitulos(idCondominio);
								retrieveFilter
										.then(function(resposta) {

											if (resposta != null) {
												if (resposta.data.status) {
													$scope.titulos = resposta.data.object;
												} else {
													showAlertMessage(resposta.data.message);
												}
											} else {
												showErrorMessage('Problemas de comunicação...');
											}
										});
							};

							$scope.retrieveHistoricos = function() {

								var retrieveFilter = baixaService
										.retrieveHistoricosCaixaBanco();
								retrieveFilter
										.then(function(resposta) {

											if (resposta != null) {
												if (resposta.data.status) {
													$scope.historicos = resposta.data.object;
												} else {
													showAlertMessage(resposta.data.message);
												}
											} else {
												showErrorMessage('Problemas de comunicação...');
											}
										});
							};

							$scope.retrieveContas = function(idCondominio) {

								var retrieveFilter = baixaService
										.retrieveContas(idCondominio);
								retrieveFilter
										.then(function(resposta) {

											if (resposta != null) {
												if (resposta.data.status) {
													$scope.contas = resposta.data.object;
												} else {
													showAlertMessage(resposta.data.message);
												}
											} else {
												showErrorMessage('Problemas de comunicação...');
											}
										});
							};

							/** DELETE * */
							$scope.dlete = function(unidade) {

								var dlg = dialogs.confirm('Confirma Exclusão?',
										'Baixa: ' + unidade.titulo.numero);
								dlg.result
										.then(
												function(btn) {

													var deleteBack = baixaService
															.remove(unidade);
													deleteBack
															.then(function(
																	resposta) {
																if (resposta != null) {
																	if (resposta.data.status) {
																		var index = $scope.lista
																				.indexOf(unidade);
																		$scope.lista
																				.splice(
																						index,
																						1);
																		showSuccessMessage(resposta.data.message);
																	} else {
																		showErrorMessage('Problemas de comunicação...');
																	}
																}
															});

												},
												function(btn) {
													console
															.log('Shame on you for not thinking this is awesome!');
												});

							};

							$scope.save = function(isValid) {

								if (!isValid) {
									return;
								}

								var dtMovimento = new Date(
										$scope.unidade.dataMovimento);
								$scope.unidade.dataMovimento = dtMovimento
										.toLocaleDateString();
								var dtBaixa = new Date($scope.unidade.dataBaixa);
								$scope.unidade.dataBaixa = dtBaixa
										.toLocaleDateString();

								var saveBack = baixaService
										.save($scope.unidade);
								saveBack
										.then(function(resposta) {
											if (resposta != null) {
												if (resposta.data.status) {
													$scope.unidade = resposta.data.object;
													if ($scope.isCreate) {
														if ($scope.lista == null) {
															$scope.lista = new Array();
														}
														$scope.lista
																.push($scope.unidade);
													}
													showSuccessMessage(resposta.data.message);
													$scope.list = true;
												} else {
													showErrorMessage(resposta.data.message);
												}
											} else {
												showErrorMessage('Problemas de comunicação...');
											}
										});

							};

							$scope.cancel = function(unidade) {
								$scope.list = true;
							};

						} ]);
